The present invention is directed to a method and apparatus for managing access to target devices in a multi-path computer system.
Many computer systems include one or more host computers, and one or more resources that include target devices accessible by the host computers. An example of a typical computer system resource is a storage system that stores data used by one or more of the host computers. An example of a computer system including a host computer 1 and a storage system 3 is shown in FIG. 1.
The storage system 3 includes a plurality of disk drives 5a-b, and a plurality of disk controllers 7a-7b that respectively control access to the disk drives 5a and 5b. The storage system 3 further includes a plurality of storage bus directors 9 that control communication with the host computer 1 over communication buses 17. The storage system 3 further includes a cache 11 to provide improved storage system performance. In particular, when the host computer 1 executes a read from the storage system 3, the storage system 3 may service the read from the cache 11 (when the data is stored in the cache), rather than from one of the disk drives 5a-5b, to execute the read more efficiently. Similarly, when the host computer 1 executes a write to the storage system 3, the corresponding storage bus director 9 can execute the write to the cache 11. Thereafter, the write can be destaged asynchronously, in a manner transparent to the host computer 1, to the appropriate one of the disk drives 5a-5b. Finally, the storage system 3 includes an internal bus 13 over which the storage bus directors 9, disk controllers 7a-7b and the cache 11 communicate.
The host computer 1 includes a processor 16 and one or more host bus adapters 15 that each controls communication between the processor 16 and the storage system 3 via a corresponding one of the communication buses 17. It should be appreciated that rather than a single processor 16, the host computer 1 can include multiple processors. Each bus 17 can be any of a number of different types of communication links, with the host bus adapter 15 and the storage bus directors 9 being adapted to communicate using an appropriate protocol for the communication bus 17 coupled therebetween. For example, each of the communication buses 17 can be implemented as a SCSI bus, with the directors 9 and adapters 15 each being a SCSI driver. Alternatively, communication between the host computer 1 and the storage system 3 can be performed over a Fibre Channel fabric.
As shown in the exemplary system of FIG. 1, some computer systems employ multiple paths for communicating between the host computer 1 and the storage system 3 (e.g., each path includes a host bus adapter 15, a bus 17 and a storage bus director 9 in FIG. 1). In many such systems, each of the host bus adapters 15 has the ability to access each of the disk drives 5a-b, through the appropriate storage bus director 9 and disk controller 7a-b. It should be appreciated that providing such multi-path capabilities enhances system performance, in that multiple communication operations between the host computer 1 and the storage system 3 can be performed simultaneously.
Although the provision of multiple paths between the host computer 1 and a system resource such as the storage system 3 provides for improved system performance, it also results in some increased system complexity. For example, some facility is typically required to enable the host computer 1 to recognize that multiple paths have been formed to the same storage devices within the storage system. Referring to the illustrative system of FIG. 1, the operating system on the host computer 1 typically will view the storage system 3 as having four times its actual number of disk drives 5a-b, since four separate paths are provided to each of disk drives 5a-b. Thus, one type of known multi-path system includes an additional mapping layer in the host computer 1, below the mapping layer (referred to hereafter as the xe2x80x9cfile system/LVM layerxe2x80x9d) including the file system, logical volume manager (LVM) and/or database manager, to reduce the number of storage devices (e.g., disk drives 5a-b) visible at the file system/LVM layer to the number of storage devices that actually exist on the storage system 3.
FIG. 2 is a schematic representation of a number of mapping layers that may exist in such a known multi-path computer system. The system includes an application layer 21 which includes application programs executing on the processor 16 of the host computer 1. The application layer 21 generally will refer to storage locations used thereby with a label or identifier such as a file name, and will have no knowledge about where the file is physically stored on the storage system 3 (FIG. 1). Below the application layer 21 is the file system/LVM layer 23 that maps the label or identifier specified by the application layer 21 to a logical volume that the host computer perceives to correspond directly to a physical device address (e.g., the address of one of the disk drives 5a-b) within the storage system 3. Below the file system/LVM layer 23 is a multi-path mapping layer 25 that maps the logical volume address specified by the file system/LVM layer 23, through a particular one of the multiple system paths, to the logical volume address to be presented to the storage system 3. Thus, the multi-path mapping layer 25 not only specifies a particular logical volume address, but also specifies a particular one of the multiple system paths to access the specified logical volume.
If the storage system 3 were not an intelligent storage system, the logical volume address specified by the multi-path layer 25 would identify a particular physical device (e.g., one of disk drives 5a-b) within the storage system 3. However, for an intelligent storage system such as that shown in FIG. 1, the storage system itself may include a further mapping layer 27, such that the logical volume address passed from the host computer 1 may not correspond directly to an actual physical device (e.g., a disk drive 5a-b) on the storage system 3. Rather, a logical volume specified by the host computer 1 can be spread across multiple physical storage devices (e.g., disk drives 5a-b), or multiple logical volumes accessed by the host computer 1 can be stored on a single physical storage device.
It should be appreciated from the foregoing that the multi-path mapping layer 25 performs two functions. First, it controls which of the multiple system paths is used for each access by the host computer 1 to a logical volume. Second, the multi-path mapping layer 25 also reduces the number of logical volumes visible to the file system/LVM layer 23. In particular, for a system including X paths between the host computer 1 and the storage system 3, and Y logical volumes defined on the storage system 3, the host bus adapters 15 see X times Y logical volumes. However, the multi-path mapping layer 25 reduces the number of logical volumes visible to the file system/LVM layer 23 to equal only the Y distinct logical volumes that actually exist on the storage system 3.
FIG. 3 is a conceptual representation of the manner in which the multi-path mapping layer 25 reduces the number of logical volumes visible to the file system/LVM layer 23 in the computer system of FIG. 1, which includes four paths labeled P1-P4. In the example shown in FIG. 3, the storage system 3 includes twenty logical volumes 51, labeled LV1-LV20. The host computer 1 includes four separate labels 53-56 (referred to herein as xe2x80x9cnative namesxe2x80x9d) for each of logical volumes LV1-LV20. These native names are identified conceptually in FIG. 3 as P1LV1-P1LV20, P2LV1-P2LV20, P3LV1-P3LV20 and P4LV1-P4LV20, to indicate that there are four separate paths (i.e., P1-P4) to each of the groups of logical volumes LV1-LV20. Finally, the multi-path mapping layer 25 (FIG. 2) consolidates the four groups of labels 53-56 to provide only twenty unique labels 59 (referred to herein as xe2x80x9cpseudonamesxe2x80x9d and labeled PLV1-PLV20) corresponding respectively to logical volumes LV1-LV20, so that the file system/LVM layer 23 sees the correct number of logical volumes actually defined on the storage system 3.
In a multi-path system as described above in connection with FIG. 3, the operating system executing on the host computer 1 is required to manage (e.g., at the multi-path mapping layer 25) a number of logical volume native names that is equal to the number of logical volumes defined on the storage system 3 (Y in the example above), multiplied by the number of paths (e.g., X in the example above and four in FIG. 1) between the host computer 1 and the storage system 3. Referring to the illustrative system of FIG. 1, assuming the storage system 3 includes a total of twenty disk drives 5a-b that each corresponds directly to a single logical volume, and with the system including four paths 17 between the host computer 1 and the storage system 3, the operating system on the processor 16 would need to manage eighty logical volume native names. In this respect, a unique native name is generated for each independent path to a logical volume. Thus, for each of the twenty logical volumes present on the storage system 3, four unique native names will be generated, each specifying a different path (e.g., through an adapter 15, a bus 17 and a director 9) to the logical volume. These unique native names are used during multi-path operation to identify which of the multiple system paths is to be used to execute an operation on the host computer 1 directed to a particular logical volume.
A second type of known multi-path computer system does not employ pseudonames 59 as described above in connection with FIG. 3. Rather, the file system/LVM mapping layer 23 accesses one of the logical volumes 51 in the storage system 3 by referring to one of the native names 53-56 corresponding thereto. The multi-path mapping layer 25 maintains information that establishes the logical connection among the native names 53-56, to enable the use of multiple paths. For example, if access is sought by the file system/LVM layer 23 to native name P1LV1, the multi-path mapping layer 25 will recognize that the identified logical volume in the storage system 3 (i.e., LV1) can be accessed by any of native names P1LV1, P2LV1, P3LV1 or P4LV1. Therefore, while only a single native name will be specified by the file system/LVM layer 23, the multi-path mapping layer 25 will not be constrained to use the identified path, and may select any of the multiple system paths P1-P4 for accessing the specified logical volume in the storage system 3.
One illustrative embodiment of the present invention is directed to a method of managing at least one logical volume in a computer system. The computer system includes a processor, a storage system, and a plurality of paths coupling the processor to the storage system. The storage system stores a plurality of logical volumes that includes the at least one logical volume, the at least one logical volume being accessible to the processor over at least two of the plurality of paths. The processor includes a mapping layer that assigns the plurality of logical volumes to store particular volumes of data, the mapping layer including to at least one of a file system, a logical volume manager and a database manager. The method comprises acts of: (A) adopting at least two distinct native names for the at least one logical volume, each of the native names corresponding to one of the at least two of the plurality of paths over which the at least one logical volume is accessible to the processor; (B) adopting a pseudoname for the at least two distinct native names, the pseudoname representing the at is least one logical volume in a manner that is independent of the at least two of the plurality of paths over which the at least one logical volume is accessible to the processor; and (C) making the pseudoname and the at least two native names available to the mapping layer for assignment to store a volume of data, so that the mapping layer may assign the at least one logical volume to store a particular volume of data by assigning the pseudoname or either of the at least two native names to store the particular volume of data.
Another illustrative embodiment of the invention is directed to a computer readable medium encoded with a program for execution on a computer system including a processor, a storage system, and a plurality of paths coupling the processor to the storage system. The storage system stores a plurality of logical volumes. The processor includes a mapping layer that assigns the plurality of logical volumes to store particular volumes of data, the mapping layer including at least one of a file system, a logical volume manager and a database manager. The plurality of logical volumes includes at least one logical volume that is accessible to the processor over at least two of the plurality of paths. The program, when executed on the computer system, performs a method comprising acts of: (A) adopting at least two distinct native names for the at least one logical volume, each of the native names corresponding to one of the at least two of the plurality of paths over which the at least one logical volume is accessible to the processor; (B) adopting a pseudoname for the at least two distinct native names, the pseudoname representing the at least one logical volume in a manner that is independent of the at least two of the plurality of paths over which the at least one logical volume is accessible to the processor; and (C) making the pseudoname and the at least two native names available to the mapping layer for assignment to store a volume of data, so that the mapping layer may assign the at least one logical volume to store a particular volume of data by assigning the pseudoname or either of the at least two native names to store the particular volume of data.
A further illustrative embodiment of the invention is directed to a host computer for use in a computer system including the host computer, a storage and a plurality of paths coupling the host computer to the storage system. The storage system stores a plurality of logical volumes, the plurality of logical volumes including at least one logical volume that is accessible to the host computer over at least two of the plurality of paths. The host computer comprises: a mapping layer that assigns the plurality of logical volumes to store particular volumes of data, the mapping layer including at least one of a file system, a logical volume manager and a database manager; and at least one controller. The at least one controller adopts at least two distinct native names for the at least one logical volume, each of the native names corresponding to one of the at least two of the plurality of paths over which the at least one logical volume is accessible to the host computer. The at least one controller further adopts a pseudoname for the at least two distinct native names, the pseudoname representing the at least one logical volume in a manner that is independent of the at least two of the plurality of paths over which the at least one logical volume is accessible to the host computer. The at least one controller further makes the pseudoname and the at least two native names available to the mapping layer for assignment to store a volume of data, so that the mapping layer may assign the at least one logical volume to store a particular volume of data by assigning the pseudoname or either of the at least two native names to store the particular volume of data.
A further embodiment of the invention is directed to a method of managing at least one system resource in a computer system, the computer system including a processor, a device, and a plurality of paths coupling the processor to the device. The at least one system resource is accessible to the processor over at least two of the plurality of paths. The device includes a plurality of system resources including the at least one system resource. The processor includes a mapping layer that assigns the plurality of system resources to perform particular tasks. The method comprises acts of: (A) creating at least two distinct native names for the at least one system resource, each of the native names corresponding to one of the at least two of the plurality of paths over which the at least one system resource is accessible to the processor; (B) creating a pseudoname for the at least two distinct native names, the pseudoname representing the at least one system resource in a manner that is independent of the at least two of the plurality of paths over which the at least one system resource is accessible to the processor; and (C) making the pseudoname and the at least two native names available to the mapping layer for assignment to perform a task, so that the mapping layer may assign the at least one system resource to perform a particular task by assigning the pseudoname or either of the at least two native names to perform the particular task.
Another illustrative embodiment of the invention is directed to a method of managing a plurality of logical volumes in a computer system, the computer system including a processor, a storage system, and a plurality of paths coupling the processor to the storage system. The processor includes a mapping layer including at least first and second mapping entities that each assigns at least a subset of the plurality of logical volumes to store particular volumes of data. The mapping layer includes at least one of a file system, a logical volume manager and a database manager. Each of the plurality of logical volumes is accessible to the processor over at least two of the plurality of paths. Each one of the plurality of logical volumes has a corresponding set of native names including a distinct native name for each of the plurality of paths over which the one of the plurality of logical volumes is accessible to the processor. Each set of native names has a pseudoname that represents the corresponding logical volume in a manner that is independent of any of the plurality of paths over which the corresponding logical volume is accessible to the processor. The sets of native names collectively form a plurality of native names that represent the plurality of logical volumes, and the pseudonames for the sets of native names collectively form a plurality of pseudonames that represent the plurality of logical volumes. The method comprises acts of: (A) the first mapping entity assigning a first subset of the plurality of logical volumes to store a first group of volumes of data by assigning at least some of the plurality of pseudonames to store the first group of volumes of data; and (B) the second mapping entity assigning a second subset of the plurality of logical volumes to store a second group of volumes of data by assigning at least some of the plurality of native names to store the second group of volumes of data.
A further illustrative embodiment of the invention is directed to a host computer for use in a computer system including the host computer, a storage system, and a plurality of paths coupling the host computer to the storage system. The storage system stores the plurality of logical volumes. Each of the plurality of logical volumes is accessible to the host computer over at least two of the plurality of paths. Each one of the plurality of logical volumes has a corresponding set of native names including a distinct native name for each of the plurality of paths over which the one of the plurality of logical volumes is accessible to the host computer. Each set of native names has a pseudoname that represents the corresponding logical volume in a manner that is independent of any of the plurality of paths over which the corresponding logical volume is accessible to the host computer. The sets of native names collectively form a plurality of native names that represent the plurality of logical volumes. The pseudonames for the sets of native names collectively form a plurality of pseudonames that represent the plurality of logical volumes. The host computer comprises a mapping layer including at least first and second mapping entities that each assigns at least a subset of the plurality of logical volumes to store particular volumes of data, the first and second mapping entities each including one of a file system, a logical volume manager and a database manager. The first mapping entity assigns a first subset of the plurality of logical volumes to store a first group of volumes of data by assigning at least some of the plurality of pseudonames to store the first group of volumes of data, and the second mapping entity assigns a second subset of the plurality of logical volumes to store a second group of volumes of data by assigning at least some of the plurality of native names to store the second group of volumes of data.